/**
 * 发布一个事件用来处理系统动作
 * @param {*} event_name 事件名称
 * @param {*} event_data 事件数据
 */
export function publish_event(event_name, event_data) {
    let callback_fn = callback_data[event_name];
    if (callback_fn) {
        callback_fn(event_data);
    }
}

const callback_data = {
    "账号登录": (event_data) => {
        console.log(`[${event_data[0]}] 账号 [${event_data[1]["username"]}] 登录游戏`);
    },
    "进入游戏": (event_data) => {
        console.log(`[${event_data[0]}] 角色 [${event_data[1]["名称"]}] 进入游戏,在线账号: ${_AccountsData.size},在线角色: ${_OnlineCharactersData.size}`);
    },
    "角色上线": (event_data) => {
        console.log(`角色 [${event_data[0]["名称"]}] 上线,在线账号: ${_AccountsData.size},在线角色: ${_OnlineCharactersData.size}`);
    },
    "角色离线": (event_data) => {
        console.log(`角色 [${event_data[0]["名称"]}] 离线,在线账号: ${_AccountsData.size},在线角色: ${_OnlineCharactersData.size}`);
    },
    "切换角色": (event_data) => {
        console.log(`[${event_data[0]}] 切换角色至 [${event_data[1]["名称"]}] , 在线账号数 ${_AccountsData.size}, 在线角色: ${_OnlineCharactersData.size}`);
    },
    "穿戴装备": (event_data) => {
    },
    "脱下装备": (event_data) => {
    },
    "战斗开始": (event_data) => {
        console.log(`战斗开始 编号[${event_data["id"]}]`);
    },
    "结束战斗": (fight_data) => {
        console.log(`结束战斗 编号[${fight_data["id"]}]`);
        G.FightUtils.sync_characters_and_pet_data(fight_data);
        //战斗结算
        if (fight_data["结算"]) {
            G.FightSettlementUtils.settlement(fight_data, fight_data["胜利队伍"]);
        }
        // 删除战斗数据
        _FightDataCache.delete(fight_data["id"]);
    },
    "使用道具": (event_data) => {
        // 刷新使用道具的背包
        G.Characters.refrush_item_data(event_data[0]["id"], [event_data[1]]);
        console.log(`角色 [${event_data[0]["名称"]}] 使用道具 ${event_data[3]}`);
    },
}